1. Field of the Invention
The present invention relates to cache memory management and more particularly to cache tuning.
2. Description of the Related Art
Memory cache technologies have formed an integral part of computer engineering and computer science for well over two decades. Initially embodied as part of the underlying hardware architecture of a data processing system, data caches and program instruction caches store often-accessed data and program instructions in fast memory for subsequent retrieval in lieu of retrieving the same data and instructions from slower memory stores. Consequently, substantial performance advantages have been obtained through the routine incorporation of cache technologies in computer main board designs.
Notably, the inherent principles of the data cache have been applied far beyond the realm of the computer main board. In this regard, caching technologies have been implemented across numerous computing systems ranging from soft database management systems, to hard drive controlling technologies. Data caching technologies have become particularly important in the context of content delivery systems in which often-requested content can be cached for frequent distribution to requesting computing clients.
In the prototypical content delivery system, content can be delivered from an origin server to a community of content consuming clients. Content typically can be delivered according to a request-response paradigm in which the content consuming clients initiate a request for content to which one or more origin servers can respond with the requested content. Generally, one or more content caches can be disposed in the intermediate communications path between the content consuming clients and content servers in order to enhance the responsiveness of the servers to any single client request and to reduce the processing burden placed upon the origin server.
Content caches often cache fragments of content, such as renderable or computable portions of content in a content delivery system. Subsequent requests for the cached content by multiple different users can be satisfied by the cache, thus resulting in a substantial performance boost for content throughput. Even still, at some point, cache entries in a fragment cache can become stale. As such, cache entries for fragments can be temporally limited in the cache and expire after a period of time has elapsed. Subsequently, a request for previously cached content that has since expired requires a new retrieval of a requested fragment and the re-population of the cache with the newly retrieved fragment. The net result is a decline in throughput while requesting clients await the refreshing of the requested fragment in the cache.
Commercially available caching systems account for the decline in throughput resulting from the hard time outs of a temporally configured cache through the use of soft-time outs for stale cache entries. In this regard, it is well known to handle a fragment request for content that has become stale in the cache by serving the stale entry to all requesting clients but one. The requesting client not receiving the stale cache entry receives a newly recomputed fragment that is subsequently used to refresh the cache entry. In this way, only one of several requestors suffers the latency of refreshing the cache entry while throughput performance remains high. Even still, at some point, a stale cache entry of a fragment becomes so stale as to result in the retrieval of the cached fragment that is substantially deviant from a current state of the fragment.